<?php

namespace App\Listeners;

use App\Events\LoginEvent;
use \Agent;
use \DB;
use \Ip;
use \Request;

class LoginListener
{

    // handle方法中处理事件
    public function handle(LoginEvent $event)
    {
        //获取事件中保存的信息
        $user = $event->getUser();
        $ip   = Request::getClientIp();
        //登录信息
        $loginData = [
            'ip'         => $ip,
            'login_time' => time(),
            'user_id'    => $user['id'],
        ];

        // zhuzhichao/ip-location-zh 包含的方法获取ip地理位置
        $addresses            = Ip::find($ip);
        $loginData['address'] = implode(' ', $addresses);

        // jenssegers/agent 的方法来提取agent信息
        $loginData['device'] = Agent::device(); //设备名称

        $browser               = Agent::browser();
        $loginData['browser']  = $browser . ' ' . Agent::version($browser); //浏览器
        $platform              = Agent::platform();
        $loginData['platform'] = $platform . ' ' . Agent::version($platform); //操作系统
        $loginData['language'] = implode(',', Agent::languages()); //语言
        //设备类型
        if (Agent::isTablet()) {
            // 平板
            $loginData['device_type'] = 'tablet';
        } else if (Agent::isMobile()) {
            // 便捷设备
            $loginData['device_type'] = 'mobile';
        } else if (Agent::isRobot()) {
            // 爬虫机器人
            $loginData['device_type'] = 'robot';
            $loginData['device']      = Agent::robot(); //机器人名称
        } else {
            // 桌面设备
            $loginData['device_type'] = 'desktop';
        }

        //插入到数据库
        DB::table('login_log')->insert($loginData);

    }
}
